Документация ClickHouse
Начните печатать для поиска
Содержание
Что такое ClickHouse
Ключевые особенности OLAP сценария работы
Причины, по которым столбцовые СУБД лучше подходят для OLAP сценария
По вводу-выводу
По вычислениям
Отличительные возможности ClickHouse
По-настоящему столбцовая СУБД
Сжатие данных
Хранение данных на диске
Параллельная обработка запроса на многих процессорных ядрах
Распределённая обработка запроса на многих серверах
Поддержка SQL
Векторный движок
Обновление данных в реальном времени
Наличие индекса
Подходит для онлайн запросов
Поддержка приближённых вычислений
Репликация данных и поддержка целостности
Особенности ClickHouse, которые могут считаться недостатками
Производительность
Пропускная способность при обработке одного большого запроса
Задержки при обработке коротких запросов
Пропускная способность при обработке многочисленных коротких запросов
Производительность при вставке данных
История ClickHouse
Использование в Яндекс.Метрике и других отделах Яндекса
Агрегированные и неагрегированные данные
ClickHouse Adopters
Начало работы
Установка
Системные требования
Доступные варианты установки
Из DEB пакетов
Из RPM пакетов
Из tgz архивов
Из Docker образа
Из исходного кода
Запуск
ClickHouse Tutorial
What to Expect from This Tutorial?
Single Node Setup
Import Sample Dataset
Download and Extract Table Data
Create Tables
Import Data
Example Queries
Cluster Deployment
OnTime
Импорт из сырых данных
Скачивание готовых партиций
Запросы:
Данные о такси в Нью-Йорке
Как импортировать сырые данные
Скачивание готовых партиций
Результаты на одном сервере
Резюме
AMPLab Big Data Benchmark
WikiStat
Терабайт логов кликов от Criteo
Star Schema Benchmark
Анонимизированные данные Яндекс.Метрики
Получение таблиц из партиций
Получение таблиц из сжатых tsv-файлов
Запросы
Интерфейсы
Клиент командной строки
Использование
Запросы с параметрами
Cинтаксис запроса
Пример
Конфигурирование
Параметры командной строки
Конфигурационные файлы
Родной интерфейс (TCP)
HTTP-интерфейс
Буферизация ответа
Запросы с параметрами
Пример
MySQL-интерфейс
Форматы входных и выходных данных
TabSeparated
Форматирование данных
TabSeparatedRaw
TabSeparatedWithNames
TabSeparatedWithNamesAndTypes
Template
TemplateIgnoreSpaces
TSKV
CSV
CSVWithNames
CustomSeparated
JSON
JSONCompact
JSONEachRow
Вставка данных
Выборка данных
Использование вложенных структур
Native
Null
Pretty
PrettyCompact
PrettyCompactMonoBlock
PrettyNoEscapes
PrettyCompactNoEscapes
PrettySpaceNoEscapes
PrettySpace
RowBinary
RowBinaryWithNamesAndTypes
Values
Vertical
XML
CapnProto
Protobuf
Parquet
Соответствие типов данных
Вставка и выборка данных
ORC
Соответствие типов данных
Вставка данных
Схема формата
JDBC-драйвер
ODBC-драйвер
C++ клиентская библиотека
Клиентские библиотеки от сторонних разработчиков
Библиотеки для интеграции от сторонних разработчиков
Инфраструктурные продукты
Экосистемы вокруг языков программирования
Визуальные интерфейсы от сторонних разработчиков
С открытым исходным кодом
Tabix
HouseOps
LightHouse
Redash
DBeaver
clickhouse-cli
clickhouse-flamegraph
Коммерческие
DataGrip
Holistics Software
Looker
Прокси-серверы от сторонних разработчиков
chproxy
KittenHouse
ClickHouse-Bulk
Движки баз данных
MySQL
Создание базы данных
Поддержка типов данных
Примеры использования
Движки таблиц
Семейства движков
MergeTree
Log
Движки для интергации
Специальные движки
Виртуальные столбцы
MergeTree
Создание таблицы
Секции запроса
Хранение данных
Первичные ключи и индексы в запросах
Выбор первичного ключа
Первичный ключ, отличный от ключа сортировки
Использование индексов и партиций в запросах
Использование индекса для частично-монотонных первичных ключей
Индексы пропуска данных (экспериментальная функциональность)
Доступные индексы
Поддержка для функций
Конкурентный доступ к данным
TTL для столбцов и таблиц
Хранение данных таблицы на нескольких блочных устройствах
Введение
Термины
Конфигурация
Особенности работы
Репликация данных
Создание реплицируемых таблиц
Восстановление после сбоя
Восстановление в случае потери всех данных
Преобразование из MergeTree в ReplicatedMergeTree
Преобразование из ReplicatedMergeTree в MergeTree
Восстановление в случае потери или повреждения метаданных на ZooKeeper кластере
Произвольный ключ партиционирования
ReplacingMergeTree
Создание таблицы
SummingMergeTree
Создание таблицы
Пример использования
Обработка данных
Общие правила суммирования
Суммирование в столбцах AggregateFunction
Вложенные структуры
AggregatingMergeTree
Создание таблицы
SELECT/INSERT данных
Пример агрегирущего материализованного представления
CollapsingMergeTree
Создание таблицы
Сворачивание (удаление) строк
Данные
Алгоритм
Пример использования
Пример другого подхода
VersionedCollapsingMergeTree
Создание таблицы
Сворачивание (удаление) строк
Данные
Алгоритм
Выборка данных
Пример использования
GraphiteMergeTree
Создание таблицы
Конфигурация rollup
Требуемые столбцы (required-columns)
Правила (patterns)
Пример конфигурации
Семейство Log
Общие свойства
Отличия
StripeLog
Создание таблицы
Запись данных
Чтение данных
Пример использования
Log
TinyLog
Kafka
Создание таблицы
Описание
Конфигурация
Виртуальные столбцы
MySQL
Создание таблицы
Пример использования
Смотрите также
JDBC
Создание таблицы
Пример использования
Смотрите также
ODBC
Создание таблицы
Пример использования
Смотрите также
HDFS
Использование движка
Детали реализации
Виртуальные столбцы
Distributed
Внешние данные для обработки запроса
Dictionary
Merge
Виртуальные столбцы
File(Format)
Использование движка в сервере ClickHouse
Использование движка в clickhouse-local
Детали реализации
Null
Set
Join
Создание таблицы
Использование таблицы
Пример
Выборка и вставка данных
Ограничения и настройки
Хранение данных
URL(URL, Format)
Использование движка в сервере ClickHouse
Особенности использования
View
MaterializedView
Memory
Buffer
Справка по SQL
Синтаксис
Пробелы
Комментарии
Ключевые слова
Идентификаторы
Литералы
Числовые
Строковые
Составные
NULL
Функции
Операторы
Типы данных и движки таблиц
Синонимы выражений
Примечания по использованию
Звёздочка
Выражения
Синтаксис запросов SELECT
Секция WITH
Секция FROM
FINAL Modifier
Секция SAMPLE
SAMPLE k
SAMPLE n
SAMPLE k OFFSET m
Секция ARRAY JOIN
Использование алиасов
ARRAY JOIN с вложенными структурами данных
Секция JOIN
Поддерживаемые типы JOIN
Множественный JOIN
Строгость
GLOBAL JOIN
Обработка пустых ячеек и NULL
Ограничения синтаксиса
Секция WHERE
Секция PREWHERE
Секция GROUP BY
Обработка NULL
Модификатор WITH TOTALS
GROUP BY во внешней памяти
Секция LIMIT BY
Секция HAVING
Секция ORDER BY
Секция SELECT
Секция DISTINCT
Секция LIMIT
Секция UNION ALL
Секция INTO OUTFILE
Секция FORMAT
Операторы IN
Обработка NULL
Распределённые подзапросы
Экстремальные значения
Замечания
INSERT
Ограничения (constraints)
Вставка результатов SELECT
Замечания о производительности
CREATE DATABASE
Секции
CREATE TABLE
Значения по умолчанию
Ограничения (constraints)
Выражение для TTL
Кодеки сжатия столбцов
Специализированные кодеки
Кодеки общего назначения
Временные таблицы
Распределенные DDL запросы (секция ON CLUSTER)
CREATE VIEW
ALTER
Манипуляции со столбцами
ADD COLUMN
DROP COLUMN
CLEAR COLUMN
COMMENT COLUMN
MODIFY COLUMN
Ограничения запроса ALTER
Манипуляции с ключевыми выражениями таблиц
Манипуляции с индексами
Манипуляции с ограничениями (constraints)
Манипуляции с партициями и кусками
DETACH PARTITION
DROP PARTITION
DROP DETACHED PARTITION|PART
ATTACH PARTITION|PART
ATTACH PARTITION FROM
REPLACE PARTITION
MOVE PARTITION TO TABLE
CLEAR COLUMN IN PARTITION
CLEAR INDEX IN PARTITION
FREEZE PARTITION
FETCH PARTITION
MOVE PARTITION|PART
Как задавать имя партиции в запросах ALTER
Синхронность запросов ALTER
Мутации
Запросы SYSTEM
RELOAD DICTIONARIES
RELOAD DICTIONARY dictionary_name
DROP DNS CACHE
DROP MARK CACHE
FLUSH LOGS
RELOAD CONFIG
SHUTDOWN
KILL
Управление распределёнными таблицами
STOP DISTRIBUTED SENDS
FLUSH DISTRIBUTED
START DISTRIBUTED SENDS
STOP MERGES
START MERGES
SHOW Queries
SHOW CREATE TABLE
SHOW DATABASES
SHOW PROCESSLIST
SHOW TABLES
Прочие виды запросов
ATTACH
CHECK TABLE
DESCRIBE TABLE
DETACH
DROP
EXISTS
KILL QUERY
KILL MUTATION
OPTIMIZE
RENAME
SET
TRUNCATE
USE
Функции
Строгая типизация
Склейка одинаковых выражений
Типы результата
Константы
Обработка NULL
Неизменяемость
Обработка ошибок
Вычисление выражений-аргументов
Выполнение функций при распределённой обработке запроса
Арифметические функции
plus(a, b), оператор a + b
minus(a, b), оператор a - b
multiply(a, b), оператор a * b
divide(a, b), оператор a / b
intDiv(a, b)
intDivOrZero(a, b)
modulo(a, b), оператор a % b
negate(a), оператор -a
abs(a)
gcd(a, b)
lcm(a, b)
Функции сравнения
equals, оператор a = b и a == b
notEquals, оператор a != b и a <> b
less, оператор <
greater, оператор >
lessOrEquals, оператор <=
greaterOrEquals, оператор >=
Логические функции
and, оператор AND
or, оператор OR
not, оператор NOT
xor
Функции преобразования типов
Общие проблемы преобразования чисел
toInt(8|16|32|64)
toInt(8|16|32|64)OrZero
toInt(8|16|32|64)OrNull
toUInt(8|16|32|64)
toUInt(8|16|32|64)OrZero
toUInt(8|16|32|64)OrNull
toFloat(32|64)
toFloat(32|64)OrZero
toFloat(32|64)OrNull
toDate
toDateOrZero
toDateOrNull
toDateTime
toDateTimeOrZero
toDateTimeOrNull
toDecimal(32|64|128)
toDecimal(32|64|128)OrNull
toDecimal(32|64|128)OrZero
toString
toFixedString(s, N)
toStringCutToZero(s)
reinterpretAsUInt(8|16|32|64)
reinterpretAsInt(8|16|32|64)
reinterpretAsFloat(32|64)
reinterpretAsDate
reinterpretAsDateTime
reinterpretAsString
CAST(x, t)
toInterval(Year|Quarter|Month|Week|Day|Hour|Minute|Second)
Функции для работы с датами и временем
toYear
toMonth
toDayOfMonth
toDayOfWeek
toHour
toMinute
toSecond
toUnixTimestamp
toStartOfYear
toStartOfQuarter
toStartOfMonth
toMonday
toStartOfDay
toStartOfHour
toStartOfMinute
toStartOfFiveMinute
toStartOfTenMinutes
toStartOfFifteenMinutes
toStartOfInterval(time_or_data, INTERVAL x unit [, time_zone])
toTime
toRelativeYearNum
toRelativeMonthNum
toRelativeWeekNum
toRelativeDayNum
toRelativeHourNum
toRelativeMinuteNum
toRelativeSecondNum
now
today
yesterday
dateDiff
timeSlot
timeSlots(StartTime, Duration,[, Size])
formatDateTime(Time, Format[, Timezone])
Функции для работы со строками
empty
notEmpty
length
lengthUTF8
lower
upper
lowerUTF8
upperUTF8
isValidUTF8
toValidUTF8
Пример
repeat
reverse
reverseUTF8
format(pattern, s0, s1, ...)
concat
concatAssumeInjective
substring(s, offset, length)
substringUTF8(s, offset, length)
appendTrailingCharIfAbsent(s, c)
convertCharset(s, from, to)
base64Encode(s)
base64Decode(s)
tryBase64Decode(s)
endsWith(s, suffix)
startsWith(str, prefix)
trim
trimLeft
trimRight
trimBoth
CRC32(s)
CRC32IEEE(s)
CRC64(s)
Функции поиска в строках
position(haystack, needle)
positionUTF8(haystack, needle)
multiSearchAllPositions
multiSearchAllPositionsUTF8
multiSearchFirstPosition(haystack, [needle1, needle2, ..., needlen])
multiSearchFirstIndex(haystack, [needle1, needle2, ..., needlen])
multiSearchAny(haystack, [needle1, needle2, ..., needlen])
match(haystack, pattern)
multiMatchAny(haystack, [pattern1, pattern2, ..., patternn])
multiMatchAnyIndex(haystack, [pattern1, pattern2, ..., patternn])
multiMatchAllIndices(haystack, [pattern1, pattern2, ..., patternn])
multiFuzzyMatchAny(haystack, distance, [pattern1, pattern2, ..., patternn])
multiFuzzyMatchAnyIndex(haystack, distance, [pattern1, pattern2, ..., patternn])
multiFuzzyMatchAllIndices(haystack, distance, [pattern1, pattern2, ..., patternn])
extract(haystack, pattern)
extractAll(haystack, pattern)
like(haystack, pattern), оператор haystack LIKE pattern
notLike(haystack, pattern), оператор haystack NOT LIKE pattern
ngramDistance(haystack, needle)
ngramSearch(haystack, needle)
Функции поиска и замены в строках
replaceOne(haystack, pattern, replacement)
replaceAll(haystack, pattern, replacement)
replaceRegexpOne(haystack, pattern, replacement)
replaceRegexpAll(haystack, pattern, replacement)
Условные функции
if
multiIf
Математические функции
e()
pi()
exp(x)
log(x)
exp2(x)
log2(x)
exp10(x)
log10(x)
sqrt(x)
cbrt(x)
erf(x)
erfc(x)
lgamma(x)
tgamma(x)
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
pow(x, y)
Функции округления
floor(x[, N])
ceil(x[, N])
round(x[, N])
Примеры
roundBankers
roundToExp2(num)
roundDuration(num)
roundAge(num)
Функции по работе с массивами
empty
notEmpty
length
emptyArrayUInt8, emptyArrayUInt16, emptyArrayUInt32, emptyArrayUInt64
emptyArrayInt8, emptyArrayInt16, emptyArrayInt32, emptyArrayInt64
emptyArrayFloat32, emptyArrayFloat64
emptyArrayDate, emptyArrayDateTime
emptyArrayString
emptyArrayToSingle
range(N)
array(x1, ...), оператор [x1, ...]
arrayConcat
arrayElement(arr, n), operator arr[n]
has(arr, elem)
hasAll
hasAny
indexOf(arr, x)
countEqual(arr, x)
arrayEnumerate(arr)
arrayEnumerateUniq(arr, ...)
arrayPopBack
arrayPopFront
arrayPushBack
arrayPushFront
arrayResize
arraySlice
arraySort([func,] arr, ...)
arrayReverseSort([func,] arr, ...)
arrayUniq(arr, ...)
arrayJoin(arr)
arrayDifference
arrayDistinct
arrayEnumerateDense(arr)
arrayIntersect(arr)
arrayReduce(agg_func, arr1, ...)
arrayReverse(arr)
reverse(arr)
arrayFlatten
arrayCompact
Функции разбиения и слияния строк и массивов
splitByChar(separator, s)
splitByString(separator, s)
arrayStringConcat(arr[, separator])
alphaTokens(s)
Битовые функции
bitAnd(a, b)
bitOr(a, b)
bitXor(a, b)
bitNot(a)
bitShiftLeft(a, b)
bitShiftRight(a, b)
bitTest
bitTestAll
bitTestAny
Функции для битмапов
bitmapBuild
bitmapToArray
bitmapSubsetLimit
bitmapContains
bitmapHasAny
bitmapHasAll
bitmapAnd
bitmapOr
bitmapXor
bitmapAndnot
bitmapCardinality
bitmapAndCardinality
bitmapOrCardinality
bitmapXorCardinality
bitmapAndnotCardinality
Функции хэширования
halfMD5
MD5
sipHash64
sipHash128
cityHash64
intHash32
intHash64
SHA1
SHA224
SHA256
URLHash(url[, N])
farmHash64
javaHash
javaHashUTF16LE
hiveHash
metroHash64
jumpConsistentHash
murmurHash2_32, murmurHash2_64
murmurHash3_32, murmurHash3_64
murmurHash3_128
xxHash32, xxHash64
Функции генерации псевдослучайных чисел
rand
rand64
Функции для работы с UUID
generateUUIDv4
toUUID (x)
UUIDStringToNum
UUIDNumToString
См. также:
Функции кодирования
char
hex
unhex(str)
UUIDStringToNum(str)
UUIDNumToString(str)
bitmaskToList(num)
bitmaskToArray(num)
Функции для работы с URL
Функции, извлекающие часть URL-а.
protocol
domain
domainWithoutWWW
topLevelDomain
firstSignificantSubdomain
cutToFirstSignificantSubdomain
path
pathFull
queryString
fragment
queryStringAndFragment
extractURLParameter(URL, name)
extractURLParameters(URL)
extractURLParameterNames(URL)
URLHierarchy(URL)
URLPathHierarchy(URL)
decodeURLComponent(URL)
Функции, удаляющие часть из URL-а
cutWWW
cutQueryString
cutFragment
cutQueryStringAndFragment
cutURLParameter(URL, name)
Функции для работы с IP-адресами
IPv4NumToString(num)
IPv4StringToNum(s)
IPv4NumToStringClassC(num)
IPv6NumToString(x)
IPv6StringToNum(s)
IPv4ToIPv6(x)
cutIPv6(x, bitsToCutForIPv6, bitsToCutForIPv4)
IPv4CIDRToRange(ipv4, cidr),
IPv6CIDRToRange(ipv6, cidr),
toIPv4(string)
toIPv6(string)
Функции для работы с JSON.
visitParamHas(params, name)
visitParamExtractUInt(params, name)
visitParamExtractInt(params, name)
visitParamExtractFloat(params, name)
visitParamExtractBool(params, name)
visitParamExtractRaw(params, name)
visitParamExtractString(params, name)
isValidJSON(json)
JSONHas(json[, indices_or_keys]...)
JSONLength(json[, indices_or_keys]...)
JSONType(json[, indices_or_keys]...)
JSONExtractUInt(json[, indices_or_keys]...)
JSONExtractInt(json[, indices_or_keys]...)
JSONExtractFloat(json[, indices_or_keys]...)
JSONExtractBool(json[, indices_or_keys]...)
JSONExtractString(json[, indices_or_keys]...)
JSONExtract(json[, indices_or_keys...], return_type)
JSONExtractKeysAndValues(json[, indices_or_keys...], value_type)
JSONExtractRaw(json[, indices_or_keys]...)
JSONExtractArrayRaw(json[, indices_or_keys]...)
Функции высшего порядка
Оператор ->, функция lambda(params, expr)
arrayMap(func, arr1, ...)
arrayFilter(func, arr1, ...)
arrayCount([func,] arr1, ...)
arrayExists([func,] arr1, ...)
arrayAll([func,] arr1, ...)
arraySum([func,] arr1, ...)
arrayFirst(func, arr1, ...)
arrayFirstIndex(func, arr1, ...)
arrayCumSum([func,] arr1, ...)
arraySort([func,] arr1, ...)
arrayReverseSort([func,] arr1, ...)
Функции для работы с внешними словарями
dictGet
dictHas
dictGetHierarchy
dictIsIn
Прочие функции
Функции для работы со словарями Яндекс.Метрики
Множественные геобазы
regionToCity(id[, geobase])
regionToArea(id[, geobase])
regionToDistrict(id[, geobase])
regionToCountry(id[, geobase])
regionToContinent(id[, geobase])
regionToPopulation(id[, geobase])
regionIn(lhs, rhs[, geobase])
regionHierarchy(id[, geobase])
regionToName(id[, lang])
Функции для реализации оператора IN.
in, notIn, globalIn, globalNotIn
tuple(x, y, ...), оператор (x, y, ...)
tupleElement(tuple, n), оператор x.N
Функция arrayJoin
Функции для работы с географическими координатами
greatCircleDistance
greatCircleAngle
pointInEllipses
pointInPolygon
geohashEncode
geohashDecode
h3IsValid
h3GetResolution
h3EdgeAngle
h3EdgeLengthM
geoToH3
h3kRing
Функции для работы с Nullable-аргументами
isNull
isNotNull
coalesce
ifNull
nullIf
assumeNotNull
toNullable
Функции машинного обучения
evalMLMethod (prediction)
Stochastic Linear Regression
Stochastic Logistic Regression
Introspection Functions
addressToLine
addressToSymbol
demangle
Прочие функции
hostName()
FQDN
basename
visibleWidth(x)
toTypeName(x)
blockSize()
materialize(x)
ignore(...)
sleep(seconds)
currentDatabase()
currentUser()
isFinite(x)
isInfinite(x)
isNaN(x)
hasColumnInTable(['hostname'[, 'username'[, 'password']],] 'database', 'table', 'column')
bar
transform
transform(x, array_from, array_to, default)
transform(x, array_from, array_to)
formatReadableSize(x)
least(a, b)
greatest(a, b)
uptime()
version()
rowNumberInBlock
rowNumberInAllBlocks()
neighbor
runningDifference(x)
runningDifferenceStartingWithFirstValue
MACNumToString(num)
MACStringToNum(s)
MACStringToOUI(s)
getSizeOfEnumType
toColumnTypeName
dumpColumnStructure
defaultValueOfArgumentType
indexHint
replicate
filesystemAvailable
filesystemFree
filesystemCapacity
finalizeAggregation
runningAccumulate
joinGet
modelEvaluate(model_name, ...)
throwIf(x[, custom_message])
identity
randomPrintableASCII
Агрегатные функции
Обработка NULL
Справочник функций
count
any(x)
anyHeavy(x)
anyLast(x)
groupBitAnd
groupBitOr
groupBitXor
groupBitmap
min(x)
max(x)
argMin(arg, val)
argMax(arg, val)
sum(x)
sumWithOverflow(x)
sumMap(key, value)
skewPop
skewSamp
kurtPop
kurtSamp
timeSeriesGroupSum(uid, timestamp, value)
timeSeriesGroupRateSum(uid, ts, val)
avg(x)
uniq
uniqCombined
uniqCombined64
uniqHLL12
uniqExact
groupArray(x), groupArray(max_size)(x)
groupArrayInsertAt(x)
groupArrayMovingSum
groupArrayMovingAvg
groupUniqArray(x), groupUniqArray(max_size)(x)
quantile(level)(x)
quantileDeterministic(level)(x, determinator)
quantileTiming
quantileTimingWeighted(level)(x, weight)
quantileExact(level)(x)
quantileExactWeighted(level)(x, weight)
quantileTDigest(level)(x)
median(x)
quantiles(level1, level2, ...)(x)
varSamp(x)
varPop(x)
stddevSamp(x)
stddevPop(x)
topK(N)(column)
topKWeighted
covarSamp(x, y)
covarPop(x, y)
corr(x, y)
simpleLinearRegression
stochasticLinearRegression
Параметры
Использование
Примечания
stochasticLogisticRegression
Параметры
Комбинаторы агрегатных функций
-If
-Array
-State
-Merge
-MergeState
-ForEach
-Resample
Параметрические агрегатные функции
histogram
sequenceMatch(pattern)(timestamp, cond1, cond2, ...)
sequenceCount(pattern)(time, cond1, cond2, ...)
windowFunnel
retention
uniqUpTo(N)(x)
Табличные функции
file
Виртуальные столбцы
merge
numbers
remote, remoteSecure
url
mysql
Пример использования
Смотрите также
jdbc
odbc
Пример использования
Смотрите также
hdfs
Виртуальные столбцы
input
Словари
Внешние словари
Настройка внешнего словаря
Хранение словарей в памяти
Способы размещения словарей в памяти
flat
hashed
complex_key_hashed
range_hashed
cache
complex_key_cache
ip_trie
Обновление словарей
Источники внешних словарей
Локальный файл
Исполняемый файл
HTTP(s)
ODBC
Выявленная уязвимость в функционировании ODBC словарей
Пример подключения PostgreSQL
Пример подключения MS SQL Server
СУБД
MySQL
ClickHouse
MongoDB
Redis
Ключ и поля словаря
Ключ
Числовой ключ
Составной ключ
Атрибуты
Смотрите также
Иерархические словари
Встроенные словари
Операторы
Операторы доступа
Оператор числового отрицания
Операторы умножения и деления
Операторы сложения и вычитания
Операторы сравнения
Операторы для работы с множествами
Оператор для работы с датами и временем
EXTRACT
INTERVAL
Оператор логического отрицания
Оператор логического 'И'
Оператор логического 'ИЛИ'
Условный оператор
Условное выражение
Оператор склеивания строк
Оператор создания лямбда-выражения
Оператор создания массива
Оператор создания кортежа
Ассоциативность
Проверка на NULL
IS NULL
IS NOT NULL
Типы данных
UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64
Диапазоны Int
Диапазоны Uint
Float32, Float64
Особенности использования чисел с плавающей запятой
NaN и Inf
Decimal(P, S), Decimal32(S), Decimal64(S), Decimal128(S)
Параметры
Диапазоны Decimal
Внутреннее представление
Операции и типы результата
Проверка переполнений
Булевы значения
String
Кодировки
FixedString
UUID
Как сгенерировать UUID
Примеры использования
Ограничения
Date
DateTime
Использование
Примеры
See Also
Enum
Примеры использования
Общие правила и особенности использования
Array(T)
Создание массива
Особенности работы с типами данных
AggregateFunction(name, types_of_arguments...)
Особенности использования
Вставка данных
Выборка данных
Пример использования
Tuple(T1, T2, ...)
Создание кортежа
Особенности работы с типами данных
Nullable(TypeName)
Особенности хранения
Пример использования
Вложенные структуры данных
Nested(Name1 Type1, Name2 Type2, ...)
Служебные типы данных
Expression
Set
Nothing
Interval
Использование
Смотрите также
Домены
Дополнительные возможности доменов
Ограничения
IPv4
Применение
IPv6
Применение
Руководства
Применение модели CatBoost в ClickHouse
Перед началом работы
1. Создайте таблицу
2. Вставьте данные в таблицу
3. Интегрируйте CatBoost в ClickHouse
4. Запустите вывод модели из SQL
Эксплуатация
Требования
Процессор
RAM
Файл подкачки
Подсистема хранения
Сеть
Программное обеспечение
Мониторинг
Использование ресурсов
Метрики сервера ClickHouse
Устранение неисправностей
Установка дистрибутива
Не получается скачать deb-пакеты из репозитория ClickHouse с помощью apt-get
Соединение с сервером
Сервер не запущен
Параметры конфигурации
Обработка запросов
Скорость обработки запросов
Советы по эксплуатации
CPU scaling governor
Ограничение CPU
Оперативная память
Huge pages
Подсистема хранения
RAID
Файловая система
Ядро Linux
Сеть
ZooKeeper
Обновление ClickHouse
Права доступа
Резервное копирование данных
Дублирование данных
Снимки файловой системы
clickhouse-copier
Манипуляции с партициями
Конфигурационные файлы
Квоты
Системные таблицы
system.asynchronous_metrics
system.clusters
system.columns
system.contributors
system.databases
system.detached_parts
system.dictionaries
system.events
system.functions
system.graphite_retentions
system.merges
system.metrics
system.metric_log
system.numbers
system.numbers_mt
system.one
system.parts
system.part_log
system.processes
system.query_log
system.query_log
system.query_thread_log
system.trace_log
system.replicas
system.settings
system.table_engines
system.tables
system.zookeeper
system.mutations
system.disks
system.storage_policies
Sampling Query Profiler
Example
How To Test Your Hardware With ClickHouse
Конфигурационные параметры сервера
Конфигурационные параметры сервера
builtin_dictionaries_reload_interval
compression
default_database
default_profile
dictionaries_config
dictionaries_lazy_load
format_schema_path
graphite
graphite_rollup
http_port/https_port
http_server_default_response
include_from
interserver_http_port
interserver_http_host
interserver_http_credentials
keep_alive_timeout
listen_host
logger
macros
mark_cache_size
max_concurrent_queries
max_connections
max_open_files
max_table_size_to_drop
merge_tree
openSSL
part_log
path
query_log
query_thread_log
trace_log
remote_servers
timezone
tcp_port
tcp_port_secure
mysql_port
tmp_path
uncompressed_cache_size
user_files_path
users_config
zookeeper
use_minimalistic_part_header_in_zookeeper
disable_internal_dns_cache
dns_cache_update_period
Настройки
Разрешения для запросов
readonly
allow_ddl
Ограничения на сложность запроса
max_memory_usage
max_memory_usage_for_user
max_memory_usage_for_all_queries
max_rows_to_read
max_bytes_to_read
read_overflow_mode
max_rows_to_group_by
group_by_overflow_mode
max_bytes_before_external_group_by
max_rows_to_sort
max_bytes_to_sort
sort_overflow_mode
max_result_rows
max_result_bytes
result_overflow_mode
max_execution_time
timeout_overflow_mode
min_execution_speed
min_execution_speed_bytes
max_execution_speed
max_execution_speed_bytes
timeout_before_checking_execution_speed
max_columns_to_read
max_temporary_columns
max_temporary_non_const_columns
max_subquery_depth
max_pipeline_depth
max_ast_depth
max_ast_elements
max_rows_in_set
max_bytes_in_set
set_overflow_mode
max_rows_in_distinct
max_bytes_in_distinct
distinct_overflow_mode
max_rows_to_transfer
max_bytes_to_transfer
transfer_overflow_mode
max_rows_in_join
max_bytes_in_join
join_overflow_mode
max_partitions_per_insert_block
Настройки
distributed_product_mode
enable_optimize_predicate_expression
fallback_to_stale_replicas_for_distributed_queries
force_index_by_date
force_primary_key
format_schema
fsync_metadata
enable_http_compression
http_zlib_compression_level
http_native_compression_disable_checksumming_on_decompress
send_progress_in_http_headers
max_http_get_redirects
input_format_allow_errors_num
input_format_allow_errors_ratio
input_format_values_interpret_expressions
input_format_defaults_for_omitted_fields
input_format_null_as_default
input_format_skip_unknown_fields
input_format_import_nested_json
input_format_with_names_use_header
date_time_input_format
join_default_strictness
join_any_take_last_row
join_any_take_last_row
join_use_nulls
max_block_size
preferred_block_size_bytes
merge_tree_uniform_read_distribution
merge_tree_min_rows_for_concurrent_read
merge_tree_min_bytes_for_concurrent_read
merge_tree_min_rows_for_seek
merge_tree_min_bytes_for_seek
merge_tree_coarse_index_granularity
merge_tree_max_rows_to_use_cache
merge_tree_max_bytes_to_use_cache
min_bytes_to_use_direct_io
log_queries
log_query_threads
max_insert_block_size
max_replica_delay_for_distributed_queries
max_threads
max_compress_block_size
min_compress_block_size
max_query_size
interactive_delay
connect_timeout, receive_timeout, send_timeout
cancel_http_readonly_queries_on_client_close
poll_interval
max_distributed_connections
distributed_connections_pool_size
connect_timeout_with_failover_ms
connections_with_failover_max_tries
extremes
use_uncompressed_cache
replace_running_query
stream_flush_interval_ms
load_balancing
Random (by default)
Nearest Hostname
In Order
First or Random
prefer_localhost_replica
totals_mode
totals_auto_threshold
max_parallel_replicas
compile
min_count_to_compile
input_format_skip_unknown_fields
output_format_json_quote_64bit_integers
format_csv_delimiter
input_format_csv_unquoted_null_literal_as_null
output_format_csv_crlf_end_of_line
output_format_tsv_crlf_end_of_line
insert_quorum
insert_quorum_timeout
select_sequential_consistency
count_distinct_implementation
max_network_bytes
max_network_bandwidth
max_network_bandwidth_for_user
max_network_bandwidth_for_all_users
allow_experimental_cross_to_join_conversion
skip_unavailable_shards
optimize_throw_if_noop
distributed_directory_monitor_sleep_time_ms
distributed_directory_monitor_max_sleep_time_ms
distributed_directory_monitor_batch_inserts
os_thread_priority
query_profiler_real_time_period_ns
query_profiler_cpu_time_period_ns
allow_introspection_functions
Ограничения на изменение настроек
Профили настроек
Настройки пользователей
user_name/password
user_name/networks
user_name/profile
user_name/quota
user_name/databases
Утилиты ClickHouse
clickhouse-copier
Запуск clickhouse-copier
Формат zookeeper.xml
Конфигурация заданий на копирование
clickhouse-local
Вызов программы
Примеры вызова
ClickHouse Development
Если вы используете Windows
Если вы используете 32-битную систему
Создание репозитория на GitHub
Клонирование репозитория на рабочую машину
Система сборки
Необязательные внешние библиотеки
Компилятор C++
Процесс сборки
Запуск собранной версии ClickHouse
Среда разработки
Написание кода
Тестовые данные
Создание pull request
Overview of ClickHouse Architecture
Columns
Field
Leaky Abstractions
Data Types
Block
Block Streams
Formats
I/O
Tables
Parsers
Interpreters
Functions
Aggregate Functions
Server
Distributed Query Execution
Merge Tree
Replication
Навигация по коду ClickHouse
How to Build ClickHouse for Development
Install Git, CMake, Python and Ninja
Install GCC 9
Install from a PPA Package
Install from Sources
Use GCC 9 for Builds
Checkout ClickHouse Sources
Build ClickHouse
How to Build ClickHouse on Any Linux
You Don't Have to Build ClickHouse
How to Build ClickHouse Debian Package
Install Git and Pbuilder
Checkout ClickHouse Sources
Run Release Script
How to Build ClickHouse on Mac OS X
Install Homebrew
Install Required Compilers, Tools, and Libraries
Checkout ClickHouse Sources
Build ClickHouse
Caveats
How to Build ClickHouse on Linux for Mac OS X
Install Clang-8
Install Cross-Compilation Toolset
Build ClickHouse
Как писать код на C++
Общее
Форматирование
Комментарии
Имена
Как писать код
Неиспользуемые возможности языка C++
Платформа
Инструментарий
Библиотеки
Общее
Дополнительно
ClickHouse Testing
Functional Tests
Known bugs
Integration Tests
Unit Tests
Performance Tests
Test Tools And Scripts
Miscellanous Tests
Manual Testing
Testing Environment
Load Testing
Build Tests
Testing For Protocol Compatibility
Help From The Compiler
Sanitizers
Fuzzing
Security Audit
Static Analyzers
Hardening
Code Style
Metrica B2B Tests
Test Coverage
Test Automation
Используемые сторонние библиотеки
ClickHouse release v20.1
ClickHouse release v20.1.2.4, 2020-01-22
Backward Incompatible Change
New Feature
Bug Fix
Improvement
Performance Improvement
Build/Testing/Packaging Improvement
Experimental Feature
Security Fix
ClickHouse release v19.17
ClickHouse release v19.17.6.36, 2019-12-27
Bug Fix
ClickHouse release v19.17.4.11, 2019-11-22
Backward Incompatible Change
New Feature
Experimental Feature
Bug Fix
Improvement
Performance Improvement
Build/Testing/Packaging Improvement
Other
ClickHouse release v19.16
ClickHouse release v19.16.2.2, 2019-10-30
Backward Incompatible Change
New Feature
Bug Fix
Improvement
Performance Improvement
Build/Testing/Packaging Improvement
Code cleanup
ClickHouse release 19.15
ClickHouse release 19.15.4.10, 2019-10-31
Bug Fix
ClickHouse release 19.15.3.6, 2019-10-09
Bug Fix
ClickHouse release 19.15.2.2, 2019-10-01
New Feature
Experimental Feature
Improvement
Build/Testing/Packaging Improvement
Bug Fix
Backward Incompatible Change
ClickHouse release 19.14
ClickHouse release 19.14.7.15, 2019-10-02
Bug Fix
ClickHouse release 19.14.6.12, 2019-09-19
Bug Fix
Build/Testing/Packaging Improvement
ClickHouse release 19.14.3.3, 2019-09-10
New Feature
Experimental Feature
Bug Fix
Security Fix
Improvement
Performance Improvement
Build/Testing/Packaging Improvement
Backward Incompatible Change
ClickHouse release 19.13
ClickHouse release 19.13.6.51, 2019-10-02
Bug Fix
ClickHouse release 19.13.5.44, 2019-09-20
Bug Fix
ClickHouse release 19.13.4.32, 2019-09-10
Bug Fix
Security Fix
ClickHouse release 19.13.3.26, 2019-08-22
Bug Fix
Security Fix
ClickHouse release 19.13.2.19, 2019-08-14
New Feature
Backward Incompatible Change
Experimental features
Bug Fix
Improvement
Performance Improvement
Build/Testing/Packaging Improvement
ClickHouse release 19.11
ClickHouse release 19.11.13.74, 2019-11-01
Bug Fix
ClickHouse release 19.11.12.69, 2019-10-02
Bug Fix
ClickHouse release 19.11.11.57, 2019-09-13
ClickHouse release 19.11.10.54, 2019-09-10
Bug Fix
ClickHouse release 19.11.9.52, 2019-09-6
Security Fix
ClickHouse release 19.11.8.46, 2019-08-22
Bug Fix
ClickHouse release 19.11.7.40, 2019-08-14
Bug fix
Improvement
ClickHouse release 19.11.5.28, 2019-08-05
Bug fix
Backward Incompatible Change
ClickHouse release 19.11.4.24, 2019-08-01
Bug Fix
Build/Testing/Packaging Improvement
Backward Incompatible Change
ClickHouse release 19.11.3.11, 2019-07-18
New Feature
Bug Fix
Improvement
Performance Improvement
Build/Testing/Packaging Improvement
Backward Incompatible Change
ClickHouse release 19.10
ClickHouse release 19.10.1.5, 2019-07-12
New Feature
Bug Fix
Improvement
Performance Improvement
Build/Testing/Packaging Improvement
ClickHouse release 19.9
ClickHouse release 19.9.3.31, 2019-07-05
Bug Fix
ClickHouse release 19.9.2.4, 2019-06-24
New Feature
Improvement
Bug Fix
Build/Testing/Packaging Improvement
ClickHouse release 19.8
ClickHouse release 19.8.3.8, 2019-06-11
New Features
Improvements
Performance Improvements
Bug Fixes
Documentation
Build/Testing/Packaging Improvements
ClickHouse release 19.7
ClickHouse release 19.7.5.29, 2019-07-05
Bug Fix
ClickHouse release 19.7.5.27, 2019-06-09
New features
Bug Fixes
ClickHouse release 19.7.3.9, 2019-05-30
New Features
Bug Fixes
Performance Improvements
Documentation
Build/Testing/Packaging Improvements
ClickHouse release 19.6
ClickHouse release 19.6.3.18, 2019-06-13
Bug Fixes
ClickHouse release 19.6.2.11, 2019-05-13
New Features
Experimental Features
Improvements
Performance Improvements
Backward Incompatible Changes
Bug Fixes
Build/Testing/Packaging Improvements
ClickHouse release 19.5
ClickHouse release 19.5.4.22, 2019-05-13
Bug fixes
ClickHouse release 19.5.3.8, 2019-04-18
Bug fixes
ClickHouse release 19.5.2.6, 2019-04-15
New Features
Improvement
Bug Fix
Backward Incompatible Change
Performance Improvement
Build/Testing/Packaging Improvement
ClickHouse release 19.4
ClickHouse release 19.4.4.33, 2019-04-17
Bug Fixes
Improvements
ClickHouse release 19.4.3.11, 2019-04-02
Bug Fixes
Build/Testing/Packaging Improvement
ClickHouse release 19.4.2.7, 2019-03-30
Bug Fixes
ClickHouse release 19.4.1.3, 2019-03-19
Bug Fixes
ClickHouse release 19.4.0.49, 2019-03-09
New Features
Bug Fixes
Improvements
Performance Improvements
Build/Testing/Packaging Improvement
ClickHouse release 19.3
ClickHouse release 19.3.9.1, 2019-04-02
Bug Fixes
Build/Testing/Packaging Improvement
ClickHouse release 19.3.7, 2019-03-12
Bug fixes
ClickHouse release 19.3.6, 2019-03-02
Bug fixes
Build/Testing/Packaging Improvements
ClickHouse release 19.3.5, 2019-02-21
Bug fixes
ClickHouse release 19.3.4, 2019-02-16
Improvements
Bug Fixes
Build/Testing/Packaging Improvements
ClickHouse release 19.3.3, 2019-02-13
New Features
Experimental features
Bug Fixes
Build/Testing/Packaging Improvements
Backward Incompatible Changes
Performance Improvements
Improvements
ClickHouse release 19.1
ClickHouse release 19.1.14, 2019-03-14
ClickHouse release 19.1.13, 2019-03-12
ClickHouse release 19.1.10, 2019-03-03
ClickHouse release 19.1
ClickHouse release 19.1.9, 2019-02-21
Bug fixes
ClickHouse release 19.1.8, 2019-02-16
Bug Fixes
ClickHouse release 19.1
ClickHouse release 19.1.7, 2019-02-15
Bug Fixes
ClickHouse release 19.1.6, 2019-01-24
New Features
Experimental features
Bug Fixes
Improvements
Performance Improvements
Backward Incompatible Changes
Build/Testing/Packaging Improvements
ClickHouse release 18.16
ClickHouse release 18.16.1, 2018-12-21
Bug fixes:
Improvements:
Build improvements:
ClickHouse release 18.16.0, 2018-12-14
New features:
Bug fixes:
Improvements:
Build improvements:
Backward incompatible changes:
ClickHouse release 18.14
ClickHouse release 18.14.19, 2018-12-19
Bug fixes:
Build improvements:
ClickHouse release 18.14.18, 2018-12-04
Bug fixes:
Build changes:
ClickHouse release 18.14.17, 2018-11-30
Bug fixes:
ClickHouse release 18.14.15, 2018-11-21
Bug fixes:
ClickHouse release 18.14.14, 2018-11-20
Bug fixes:
Build changes:
ClickHouse release 18.14.13, 2018-11-08
Bug fixes:
Performance improvements:
Build improvements:
ClickHouse release 18.14.12, 2018-11-02
Bug fixes:
ClickHouse release 18.14.11, 2018-10-29
Bug fixes:
ClickHouse release 18.14.10, 2018-10-23
ClickHouse release 18.14.9, 2018-10-16
New features:
Experimental features:
Improvements:
Bug fixes:
Backward incompatible changes:
ClickHouse release 18.12
ClickHouse release 18.12.17, 2018-09-16
New features:
Bug fixes:
Backward incompatible changes:
ClickHouse release 18.12.14, 2018-09-13
New features:
Improvements
Bug fixes:
ClickHouse release 18.12.13, 2018-09-10
New features:
Experimental features:
Improvements:
Bug fixes:
Security fix:
Backward incompatible changes:
Build changes:
ClickHouse release 18.10
ClickHouse release 18.10.3, 2018-08-13
New features:
Improvements:
Bug fixes:
Backward incompatible changes
Build changes:
ClickHouse release 18.6
ClickHouse release 18.6.0, 2018-08-02
New features:
Improvements:
ClickHouse release 18.5
ClickHouse release 18.5.1, 2018-07-31
New features:
Improvements:
Bug fixes:
ClickHouse release 18.4
ClickHouse release 18.4.0, 2018-07-28
New features:
Improvements:
Bug fixes:
Backward incompatible changes:
ClickHouse release 18.1
ClickHouse release 18.1.0, 2018-07-23
New features:
Improvements:
Bug fixes:
Backward incompatible changes:
ClickHouse release 1.1
ClickHouse release 1.1.54394, 2018-07-12
New features:
Bug fixes:
ClickHouse release 1.1.54390, 2018-07-06
New features:
Improvements:
Bug fixes:
Security fix:
ClickHouse release 1.1.54388, 2018-06-28
New features:
Experimental features:
Bug fixes:
Improvements:
Build changes:
Backward incompatible changes:
ClickHouse release 1.1.54385, 2018-06-01
Bug fixes:
ClickHouse release 1.1.54383, 2018-05-22
Bug fixes:
ClickHouse release 1.1.54381, 2018-05-14
Bug fixes:
ClickHouse release 1.1.54380, 2018-04-21
New features:
Improvements:
Bug fixes:
Backward incompatible changes:
ClickHouse release 1.1.54378, 2018-04-16
New features:
Improvements:
Bug fixes:
Build changes:
Backward incompatible changes:
ClickHouse release 1.1.54370, 2018-03-16
New features:
Improvements:
Bug fixes:
Clickhouse Release 1.1.54362, 2018-03-11
New features:
Improvements:
Bug fixes:
Backward incompatible changes:
Clickhouse Release 1.1.54343, 2018-02-05
Clickhouse Release 1.1.54342, 2018-01-22
Clickhouse Release 1.1.54337, 2018-01-18
New features:
Performance optimizations:
Bug fixes:
Build improvements:
Backward incompatible changes:
Please note when upgrading:
ClickHouse release 1.1.54327, 2017-12-21
ClickHouse release 1.1.54318, 2017-11-30
ClickHouse release 1.1.54310, 2017-11-01
New features:
Backward incompatible changes:
Bug fixes:
Build improvements:
ClickHouse release 1.1.54304, 2017-10-19
New features:
Bug fixes:
ClickHouse release 1.1.54292, 2017-09-20
New features:
Bug fixes:
ClickHouse release 1.1.54289, 2017-09-13
New features:
Bug fixes:
Improved workflow for developing and assembling ClickHouse:
Please note when upgrading:
ClickHouse release 1.1.54284, 2017-08-29
ClickHouse release 1.1.54282, 2017-08-23
Clickhouse Release 1.1.54276, 2017-08-16
New features:
Main changes:
Backward incompatible changes:
Complete list of changes:
Bug fixes:
Improved workflow for developing and assembling ClickHouse:
ClickHouse release 1.1.54245, 2017-07-04
New features:
Backward incompatible changes:
Minor changes:
Bug fixes:
Исправлено в релизе 19.14.3.3, 2019-09-10
CVE-2019-15024
CVE-2019-16535
CVE-2019-16536
Исправлено в релизе 19.13.6.1 от 20 сентября 2019
CVE-2019-18657
Исправлено в релизе 18.12.13 от 10 сентября 2018
CVE-2018-14672
Исправлено в релизе 18.10.3 от 13 августа 2018
CVE-2018-14671
Исправлено в релизе 1.1.54388 от 28 июня 2018
CVE-2018-14668
Исправлено в релизе 1.1.54390 от 6 июля 2018
CVE-2018-14669
Исправлено в релизе 1.1.54131 от 10 января 2017
CVE-2018-14670
Roadmap
Q1 2020
Планы разработки ClickHouse 2020.
1. Хранение данных, индексация.
1.1. Индексы по z-Order curve, normalized z-Order curve.
1.2. Wait-free каталог баз данных.
1.3. Неблокирующие ALTER.
1.4. Нетранзитивные ALTER столбцов.
1.5. ALTER RENAME COLUMN.
1.6. Полиморфные куски данных.
1.7. Буферизация и WAL в MergeTree.
1.8. Перенос между разделами по TTL.
1.9. Использование TTL для прореживания данных.
1.10. Пережатие старых данных в фоне.
1.11. Виртуальная файловая система.
1.12. Экспериментальная реализация VFS поверх S3 и HDFS.
1.13. Ускорение запросов с FINAL.
1.14. Не писать столбцы, полностью состоящие из нулей.
1.15. Возможность иметь разный первичный ключ в разных кусках.
1.16. Несколько физических представлений для одного куска данных.
1.17. Несколько сортировок для одной таблицы.
1.18. Отдельное хранение файлов кусков.
2. Крупные рефакторинги.
2.1. Переделка конвейера выполнения запросов на Processors.
2.2. Инфраструктура событий/метрик/ограничений/квот/трассировки.
2.3. Перенос столбцового ser/de из DataType в Column.
2.4. Перевод LowCardinality из DataType в Column. Добавление ColumnSparse.
2.5. Версионирование состояний агрегатных функций.
2.6. Правая часть IN как тип данных. Выполнение IN в виде скалярного подзапроса.
2.7. Нормализация Context.
2.8. Декларативный парсер запросов.
2.9. Логгировние в format-стиле.
2.10. Запрашивать у таблиц не столбцы, а срезы.
2.11. Разбирательство и нормализация функциональности для bitmap.
2.12. Декларативные сигнатуры функций.
2.13. Каждая функция в отдельном файле.
2.14. Все функции с состоянием переделать на FunctionBuilder.
2.15. Функция subscribe для IStorage.
3. Документация.
3.1. Перенос документации по функциям в код.
3.2. Перенос однородных частей документации в код.
+ 3.3. Исправить катастрофически отвратительно неприемлемый поиск по документации.
3.4. + Добавить японский язык в документацию.
4. Сетевое взаимодействие.
4.1. Уменьшение числа потоков при распределённых запросах.
4.2. Спекулятивное выполнение запросов на нескольких репликах.
4.3. Ограничение числа одновременных скачиваний с реплик.
4.4. Ограничение сетевой полосы при репликации.
4.5. Возможность продолжить передачу куска данных при репликации после сбоя.
4.6. p2p передача для GLOBAL подзапросов.
4.7. Ленивая загрузка множеств для IN и JOIN с помощью k/v запросов.
4.8. Разделить background pool для fetch и merge.
5. Операции.
5.1. Разделение задач на более мелкие куски в clickhouse-copier.
5.2. Автонастройка лимита на оперативку и размера кэшей.
5.3. + Встроенная ручка для Prometheus.
5.4. Opt-in сообщать в клиенте, если вышла новая версия.
5.5. + LTS релизы.
6. Инструментирование.
6.1. Исправления сэмплирующего профайлера запросов.
6.2. Добавление memory profiler.
6.3. Учёт оперативки total расширить не только на запросы.
6.4. Поддержка perf events как метрик запроса.
6.5. Эксперименты с LLVM X-Ray.
6.6. + Стек трейс для любых исключений.
6.7. + Таблица system.stack_trace.
6.8. Таблица system.crashes.
6.9. Отправлять информацию клиенту, если сервер падает по сигналу.
6.10. Сбор общих системных метрик.
7. Сопровождение разработки.
7.1. + ICU в submodules.
7.2. + LLVM в submodules.
7.3. Обновление Poco.
7.4. + Включить libc++, libc++-abi при сборке с gcc.
7.5. + Начать публиковать LTS релизы.
7.6. Правильный статистический тест для comparison mode в clickhouse-performance-test.
7.7. Доделать тесты под MSan.
7.8. Добавить clang-tidy.
7.9. Проверки на стиль имён с помощью clang-tidy.
7.10. Включение UBSan и MSan в интеграционных тестах.
7.11. Включение *San в unit тестах.
7.12. Показывать тестовое покрытие нового кода в PR.
7.13. + Включение аналога -Weverything в gcc.
7.14. + Альтернатива для readline и libedit.
7.14.1. Улучшение возможностей интерактивного режима clickhouse-client.
7.15. + Замена libressl обратно на openssl.
7.16. tzdata внутри бинарника.
7.17. + Доделать tgz пакеты.
7.18.1. Доделать бинарники под Mac.
7.18. Поместить ссылку на собранные бинарники под Mac на сайт.
7.19. + Доделать (проверить) автосборку под AArch64.
7.20. Автосборка для FreeBSD x86_64.
7.21. Автосборка для Linux ppc64.
7.22. Дэшборд для pull requests.
7.23. Функции для fuzzing.
7.24. Fuzzing лексера и парсера запросов; кодеков и форматов.
7.25. Синхронизация релизов в Аркадию.
7.26. Побайтовая идентичность репозитория с Аркадией.
7.27. Запуск автотестов в Аркадии.
7.29. Опции clickhouse install, stop, start вместо postinst, init.d, systemd скриптов.
7.30. Возможность переключения бинарных файлов на продакшене без выкладки пакетов.
7.31. Зеркалирование нагрузки между серверами.
7.32. Обфускация продакшен запросов.
7.33. Выкладывать патч релизы в репозиторий автоматически.
7.34. Бэкпортировать bugfix автоматически.
7.35. Начальные правила для авто-merge.
7.36. Понятие доверенных контрибьюторов.
7.37. Разобраться с repo.yandex.ru.
8. Интеграция с внешними системами.
8.1. Поддержка ALTER MODIFY SETTING для Kafka.
8.2. Поддержка Mongo Atlas URI.
8.3. Доработки globs (правильная поддержка диапазонов, уменьшение числа одновременных stream-ов).
8.4. Унификация File, HDFS, S3 под URL.
8.5. + Аутентификация в S3.
8.6. Kerberos аутентификация для HDFS и Kafka.
8.7. + Исправление мелочи HDFS на очень старых ядрах Linux.
8.8. + Поддержка виртуальных столбцов с именем файла и путём.
8.9. + Поддержка сжатых файлов (gz, bz) на чтение и запись.
8.10. Запись в табличную функцию ODBC.
8.11. Движок таблиц для чтения из Mongo.
8.12. Пропуск столбцов в форматах Parquet, ORC.
8.13. Поддержка массивов в Parquet, ORC.
8.14. Запись данных в ORC.
8.15. Запись данных в CapNProto.
8.16. + Поддержка формата Avro.
8.16.1. Поддержка формата JSONEachRow, засунутого в массив.
8.16.2. Поддержка формата Thrift.
8.16.3. Поддержка формата MsgPack.
8.16.4. Формат Regexp.
8.17. ClickHouse как MySQL реплика.
8.18. + ClickHouse как Federated MySQL.
8.19. Интеграция с RabbitMQ.
8.20. Интеграция с SQS.
8.21. Поддержка произвольного количества языков для имён регионов.
8.22. Поддержка синтаксиса для переменных в стиле MySQL.
8.23. Подписка для импорта обновляемых и ротируемых логов в ФС.
9. Безопасность.
9.1. + Ограничение на хосты в запросах ко внешним системам.
9.2. Преднастроенные именованные соединения к внешним БД.
9.3. Поддержка TLS для ZooKeeper.
10. Внешние словари.
10.1. + Исправление зависания в библиотеке доступа к YT.
10.2. Исправление SIGILL в библиотеке доступа к YT.
10.3. Возможность чтения данных из статических таблиц в YT словарях.
10.4. Словарь из YDB (KikiMR).
10.5. Закрытие соединений и уменьшение числа соединений для MySQL и ODBC.
10.6. Словари из Cassandra и Couchbase.
10.7. Поддержка Nullable в словарях.
10.8. Поддержка массивов в словарях.
10.9. Уменьшение блокировок для cache словарей за счёт одновременных запросов одного и того же.
10.10. Возможность использования старых значений из cache словаря пока они перезапрашиваются.
10.11. Возможность исключительно асинхронных запросов в cache словарях.
10.12. Layout direct для словарей.
10.13. Использование Join как generic layout для словарей.
10.14. Поддержка всех типов в функции transform.
10.15. Использование словарей как специализированного layout для Join.
10.16. Словари на локальном SSD.
10.17. Локальный дамп состояния словаря для быстрого старта сервера.
10.18. Таблица Join или словарь на удалённом сервере как key-value БД для cache словаря.
10.19. Возможность зарегистрировать некоторые функции, использующие словари, под пользовательскими именами.
11. Интерфейсы.
11.1. Вставка состояний агрегатных функций в виде кортежа аргументов или массива кортежей аргументов.
11.2. Возможность использовать движок JDBC из коробки.
11.3. Интеграционные тесты ODBC драйвера путём подключения ClickHouse к самому себе через ODBC.
11.4. Исправление упячек с типами Date и Decimal в clickhouse-cpp.
11.5. Поддержка TLS в clickhouse-cpp.
11.6. Интеграционные тесты clickhouse-cpp.
11.7. Интерактивный режим работы программы clickhouse-local.
11.8. Поддержка протокола PostgreSQL.
11.9. Доработки ODBC драйвера.
11.10. Преднастроенные HTTP handlers для запросов.
12. Управление пользователями и доступом.
12.1. Role Based Access Control.
12.2. Управление пользователями и правами доступа с помощью SQL запросов.
12.3. Подключение справочника пользователей и прав доступа из LDAP.
12.4. Подключение IDM системы Яндекса как справочника пользователей и прав доступа.
12.5. Pluggable аутентификация с помощью Kerberos (возможно, подключение GSASL).
12.6. Информация о пользователях и квотах в системной таблице.
13. Разделение ресурсов, multi-tenancy.
13.1. Overcommit запросов по памяти и вытеснение.
13.2. Общий конвейер выполнения на сервер.
13.3. Пулы ресурсов.
14. Диалект SQL.
14.1. Исправление семантики CAST для Nullable.
14.2. Поддержка WITH для подзапросов.
14.3. Поддержка подстановок для множеств в правой части IN.
14.4. Поддержка подстановок для идентификаторов (имён) в SQL запросе.
14.5. Поддержка задания множества как массива в правой части секции IN.
14.6. Глобальный scope для WITH.
14.7. Nullable для WITH ROLLUP, WITH CUBE, WITH TOTALS.
14.8. Модификаторы DISTINCT, ORDER BY для агрегатных функций.
14.9. Поддержка запроса EXPLAIN.
14.10. arrayReduce как функция высшего порядка.
14.11. Функции для grouping sets.
14.12. Функции обработки временных рядов.
14.13. Применимость функций высшего порядка для кортежей и Nested.
14.14. Неявные преобразования типов констант.
14.15. Неявные преобразования типов под настройкой.
14.16. Синонимы для функций из MySQL.
14.17. Ввести понятие stateful функций.
14.18. UNION DISTINCT и возможность включить его по-умолчанию.
14.19. Совместимость парсера типов данных с SQL.
14.20. Позиционные аргументы для GROUP BY и ORDER BY.
14.21. Приведение типов для IN (подзапрос) и для JOIN.
15. Улучшение поддержки JOIN.
15.1. Доведение merge JOIN до продакшена.
15.1.1. Алгоритм two-level merge JOIN.
15.1.2. Тестирование реализации JOIN в Greenplum.
15.2. Прокидывание условий в OUTER JOIN.
15.3. Логический вывод для цепочек вида ON t1.x = t2.y WHERE t1.x = 10
15.4. Distributed JOIN с помощью перераспределения данных.
15.5. Использование ключа таблицы для оптимизации merge JOIN.
15.6. + SEMI и ANTI JOIN.
16. Типы данных и функции.
16.1. + DateTime64.
16.2. Тип данных для JSON.
16.3. Поддержка неконстантных аргументов с регулярными выражениями в функциях.
16.4. Функция rowNumberForKey.
16.5. Функции для XML и HTML escape.
16.6. Функции нормализации и хэширования SQL запросов.
17. Работа с географическими данными.
17.1. Гео-словари для определения региона по координатам.
17.2. GIS типы данных и операции.
17.3. + Ускорение greatCircleDistance.
17.4. Ускорение geohash с помощью библиотеки из Аркадии.
17.5. Проверки в функции pointInPolygon.
18. Машинное обучение и статистика.
18.1. Инкрементальная кластеризация данных.
18.2. Агрегатные функции для статистических тестов.
18.3. Инфраструктура для тренировки моделей в ClickHouse.
19. Улучшение работы кластера.
19.1. Параллельные кворумные вставки без линеаризуемости.
19.2. Подключение Etcd или Consul как альтернативы ZooKeeper.
19.3. Подключение YT Cypress или YDB как альтернативы ZooKeeper.
19.4. internal_replication = 'auto'.
19.5. Реплицируемые базы данных.
19.6. Одновременный выбор кусков для слияния многими репликами, отказ от leader election в ZK.
19.7. Возможность записи данных при недоступности ZK и отказ от линейного порядка кусков в большинстве случаев.
19.8. Отказ от хранения в ZK множества кусков для каждой реплики отдельно.
19.9. Отказ от хранения в ZK лога вставок и мержей. Обмен данными о кусках напрямую.
19.10. Облачные таблицы.
20. Мутации данных.
20.1. Поддержка DELETE путём запоминания множества затронутых кусков и ключей.
20.2. Поддержка DELETE путём преобразования множества ключей в множество row_numbers на реплике, столбца флагов и индекса по диапазонам.
20.3. Поддержка ленивых DELETE путём запоминания выражений и преобразования к множеству ключей в фоне.
20.4. Поддержка UPDATE с помощью преобразования в DELETE и вставок.
21. Оптимизации производительности.
21.1. + Параллельный парсинг форматов.
21.1.1. Избавление от лишнего копирование при параллельном парсинге форматов, если возможен mmap файла целиком.
21.2. Параллельное форматирование форматов.
21.3. Исправление низкой производительности анализа индекса в случае большого множества в секции IN.
21.4. Использование ORDER BY ключа для оптимизации GROUP BY и DISTINCT.
21.5. Распараллеливание INSERT при INSERT SELECT, если это необходимо.
21.6. Уменьшение числа потоков для SELECT в случае тривиального INSERT SELECT.
21.7. Кэш результатов запросов.
21.8. Взаимная интеграция аллокатора и кэша.
21.8.1. Отдельный аллокатор для кэшей с ASLR.
21.9. Исправить push-down выражений с помощью Processors.
21.10. + Улучшение эвристики PREWHERE.
21.11. Peephole оптимизации запросов.
21.12. Алгебраические оптимизации запросов.
21.13. Fusion агрегатных функций.
21.14. Оптимизация запросов с помощью constraints.
21.15. Многоступенчатое чтение данных вместо PREWHERE.
21.16. Оптимизация GROUP BY с большим количеством агрегатных функций путём вычисления в два прохода.
21.17. Оптимизация GROUP BY при наличии ORDER BY по тем же ключам с LIMIT.
21.18. Внутренняя параллелизация мержа больших состояний агрегатных функций.
21.19. Оптимизация сортировки.
21.20. Использование материализованных представлений для оптимизации запросов.
21.21. + Чтение больших файлов с помощью mmap.
21.22. Userspace page cache.
21.23. Ускорение работы с вторичными индексами.
22. Долги и недоделанные возможности.
22.1. + Исправление неработающих таймаутов, если используется TLS.
22.2. + Убрать возможность изменить настройки в native протоколе в случае readonly.
22.3. Защита от абсурдно заданных пользователем кодеков.
22.4. Исправление оставшихся deadlocks в табличных RWLock-ах.
22.5. + Исправление редких срабатываний TSan в stress тестах в CI.
22.6. Изменение только DEFAULT в ALTER TABLE может поменять тип столбца.
22.7. + Row-Level Security не работает в случае наличия в запросе IN подзапросов.
22.8. + Исправить десериализацию параметров для параметризованных запросов.
22.9. Разобраться с десериализацией массивов со значениями по-умолчанию в Protobuf формате в случае protobuf 3.
22.10. Исправление дрифта при отслеживании потребления памяти запросами.
22.11. + Более простая ser/de настроек запросов.
22.12. + Исправление низкой производительности чтения из Kafka.
22.13. + Посмотреть, почему не работают некоторые collations.
22.14. Посмотреть, почему не работает StorageSet для MergeTree таблиц при некоторых условиях.
22.15. Нормализация коммитов в Kafka и идемпотентности операций.
22.16. + Исправление низкой производительности кодека DoubleDelta.
22.17. Консистентно работающий POPULATE для MaterializedView.
22.18. Исправление заметного падения производительности форматов после добавления доменов типов.
22.19. + Одновременное использование SAMPLE и PREWHERE.
22.20. + Неправильная работа PREWHERE при некоторых условиях.
22.21. Неправильное поведение DateTime в районе начала unix epoch.
22.22. Nullable в функции transform и в CASE по множеству значений.
22.23. Правильная обработка Nullable в функциях, которые кидают исключение на default значении: modulo, intDiv.
22.24. Излишняя фильтрация ODBC connection string.
22.25. Избавиться от библиотеки btrie.
22.26. Плохая производительность quantileTDigest.
22.27. Проверить несколько PR, которые были закрыты zhang2014 и sundy-li.
22.28. Изучить и исправить поведение работы с Kafka при ребалансировке.
22.29. + Уязвимость DDL для словарей executable.
23. Default Festival.
23.1. + Включение minimalistic_part_header в ZooKeeper.
23.2. Включение distributed_aggregation_memory_efficient.
23.3. Включение min_bytes_to_external_sort и min_bytes_to_external_group_by.
23.4. Включение синхронной записи в Distributed таблицы по-умолчанию.
23.5. Включение compile_expressions.
23.6. Включение учёта порядка столбцов в CSV.
23.7. Включение NULL as Default в CSV.
23.8. + Включение оптимизации VALUES.
23.9. + Включение Processors.
23.10. Включение mlock бинарника.
24. Экспериментальные задачи.
24.1. Веб-интерфейс для просмотра состояния кластера и профилирования запросов.
24.2. Экспериментальные алгоритмы сжатия.
24.3. Экспериментальные кодеки.
24.4. Шифрование в ClickHouse на уровне кусков данных.
24.5. Поддержка функций шифрования для отдельных значений.
24.6. Userspace RAID.
24.7. Вероятностные структуры данных для фильтрации по подзапросам.
24.8. Специализация векторизованного кода для AVX/AVX2/AVX512 и ARM NEON.
24.9. Общий подход к CPU dispatching в фабрике функций.
24.10. Поддержка типов half/bfloat16/unum.
24.11. User Defined Functions.
24.12. GPU offloading.
24.13. Stream запросы.
24.14. Window функции.
24.15. Поддержка полуструктурированных данных.
24.16. Улучшение эвристики слияний.
24.17. Экспериментальные способы ускорения параллельного GROUP BY.
24.18. Не TCP протокол передачи файлов при репликации.
24.19. Промежуточное состояние GROUP BY как структура данных для key-value доступа.
24.20. Short-circuit вычисления некоторых выражений.
24.21. Реализация в ClickHouse протокола распределённого консенсуса.
24.22. Вывод типов по блоку данных. Вывод формата данных по примеру.
24.23. Минимальная поддержка транзакций для множества вставок/чтений.
24.24. Реализация алгоритмов differential privacy.
24.25. Интеграция в ClickHouse функциональности обработки HTTP User Agent.
24.26. Поддержка open tracing или аналогов.
24.27. Реализация алгоритмов min-hash, sim-hash для нечёткого поиска полудубликатов.
24.28. Другой sketch для квантилей.
24.29. Поддержка Arrow Flight.
24.30. ClickHouse как графовая СУБД.
24.31. Кореллированные подзапросы.
24.32. Поддержка GRPC.
25. DevRel
25.1. + Перевод инструкции для начинающих разработчиков.
25.2. + Вычитка и выкладка статьи про обфускацию данных на английском.
25.3. Подготовка статьи "Секреты оптимизации производительности ClickHouse".
25.4. Подготовка статьи "Профайлер запросов: трудный путь".
25.5. Подготовка статьи "Тестирование ClickHouse, которое мы заслужили".
25.6. Перевод этих статей на английский.
25.7. Перевод статьи Данилы Кутенина на английский.
25.8. + Выступление keynote на BDTC.
25.9. Подготовка докладчиков: khvostikao, ilezhankin, nikitamikhailov, akuzm и другие.
25.10. Митапы в России и Беларуси: Москва x2 + митап для разработчиков или хакатон, Санкт-Петербург, Минск, Нижний Новгород, Екатеринбург, Новосибирск и/или Академгородок, Иннополис или Казань.
25.11. Митапы зарубежные: восток США (Нью Йорк, возможно Raleigh), возможно северо-запад (Сиэтл), Китай (Пекин снова, возможно митап для разработчиков или хакатон), Лондон.
25.12. Статья "научная" - про устройство хранения данных и индексов или whitepaper по архитектуре. Есть вариант подать на VLDB.
25.13. Участие во всех мероприятиях Яндекса, которые связаны с разработкой бэкенда, C++ разработкой или с базами данных, возможно участие в DevRel мероприятиях.
25.14. Конференции в России: все HighLoad, возможно CodeFest, DUMP или UWDC, возможно C++ Russia.
25.15. Конференции зарубежные: Percona, DataOps, попытка попасть на более крупные.
25.16. Сайт play.clickhouse.
25.17. Взаимодействие с ВУЗами: ВШЭ, УрФУ, ICT Beijing.
25.18. Лекция в ШАД.
25.19. Участие в курсе разработки на C++ в ШАД.
25.20. Ещё одно сравнение производительности аналитических СУБД.
25.21. Повторное награждение контрибьюторов в Китае.
25.22. On-site помощь с ClickHouse компаниям в дни рядом с мероприятиями.
25.23. Новый мерч для ClickHouse.
25.24. Конкурсы bughunter или оптимизации кода на C++.
25.25. Семинары для потенциальных клиентов Яндекс.Облака.
25.26. - Участие в GSoC.
25.27. Обновить сайт ClickHouse.
Общие вопросы
Почему бы не использовать системы типа MapReduce?
Что делать, если у меня проблема с кодировками при использовании Oracle через ODBC?
Как экспортировать данные из ClickHouse в файл?
Секция INTO OUTFILE
Таблица с движком File
Перенаправление в командой строке
Релиз:
последний
▾
Многостраничная версия
PDF версия
Исходный код ClickHouse
Документация ClickHouse